# ============================================================
# * Copyright © hk. 2022-2025. All rights reserved.
# * File name: CMakeLists.txt
# * Author   : 苏木
# * Date     : 2025-05-22
# * Version  : 
# * Description: cmake version 3.16.3
# ============================================================
## https://cmake.com.cn/cmake/help/latest/guide/tutorial/index.html
## https://cmake.org/cmake/help/latest/


# 将当前目录的源文件生成库, 自动扫描当前目录所有.c文件
file(GLOB LOCAL_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.c")

# 生成静态库
add_library(func_version_static STATIC ${LOCAL_SRCS})
set_target_properties(func_version_static 
					  PROPERTIES
					  CLEAN_DIRECT_OUTPUT 1
					  OUTPUT_NAME "func_version")

# 生成动态库
add_library(func_version_shared SHARED ${LOCAL_SRCS})
set_target_properties(func_version_shared 
					  PROPERTIES 
					  VERSION 1.2  # 完整版本号 (影响文件名) 
					  SOVERSION 1  # 主版本号 (影响 soname)
					  CLEAN_DIRECT_OUTPUT 1       # 防止中间文件冲突
					  OUTPUT_NAME "func_version"  # 确保基础名称不带版本号
)

# message(STATUS "[USER:FUNC_VERSION]This is sub dir: func_version!Found source files:${LOCAL_SRCS}") 

# 说明：
# cmake 在构建一个新的 target 时，会尝试清理掉其他使用这个名字的库，因此，在构建 libfunc_version.a 时，就会清理掉 libfunc_version.so。
# 但是呢，上面的实例中我似乎并没有遇到这个问题，后面清楚了再更新吧.
